var prifix = '';


var RESERVATIONCENTERURL = {                                                        //预约中心

    addReservation:{                                                                //添加预约
        store               : prifix + '/reserve/store',
    },
    reservationList:{                                                              //预约列表页面
        index   : prifix + '/reserve/index',                                         //预约列表
        edit    : prifix + '/reserve/edit',
        update  : prifix + '/reserve/update',                                      //更新诊室
        destroy : prifix + '/reserve/destroy',                                      //解除预约
        notify  : prifix + '/reserve/notify'                                        //发送短信
    },
    statistical:{                                                                   //统计页面
        doctor:{                                                                    //医生统计页面
            statistics: prifix + '/reserve/statistics/situation'                    //查询图表信息
        },
        admin:{
            visit: prifix + '/reserve/statistics/visit'
        }


    },
    doctorManagement:{                                                              //医生管理
        doctor:{                                                                    //医生页面
            store               : prifix + '/reserve/schedule/store',
            update              : prifix + '/reserve/schedule/update',
            plan                : prifix + '/reserve/schedule/plan',
            planOfMonth         : prifix + '/reserve/schedule/planOfMonth',
            storeWithAMonth     : prifix + '/reserve/schedule/storeWithAMonth',
            destroyMonth        : prifix + '/reserve/schedule/destroyMonth',
            planInMonthAfterNow : prifix + '/reserve/schedule/planInMonthAfterNow'
        },
        admin:{                                                                     //管理员页面
            index           : prifix + '/manage/doctor',
            store           : prifix + '/manage/doctor/store',
            update          : prifix + '/manage/doctor/update',
            destroy         : prifix + '/manage/doctor/destroy',
            edit            : prifix + '/manage/doctor/edit'
        }
    },
    patientPool:{
        doctor:{                                                                    //医生用户
            index    :   prifix + '/reserve/pool/index',
            reject   :   prifix + '/reserve/pool/reject',
            accept   :   prifix + '/reserve/pool/accept'
        },
        admin:{
            assignTo   :   prifix + '/reserve/pool/assignTo',
            doctors    :   prifix + '/reserve/pool/doctors'
        }
    },
    messageCenter:{
        index     :     prifix + '/reserve/message',
        unread    :     prifix + '/reserve/message/unread'
    }

};


    //confirm 弹窗  start
    function confirmModel(title,body,okBtn,cancelBtn,okHidden){
        if(!title){
            title='温馨提示';
        }
        if(!body){
            body='确定要删除吗？';
        }
        if(!okBtn){
            okBtn='确定';
        }
        if(!cancelBtn){
            cancelBtn='取消';
        }
        $.confirm({
            title:title,
            body: body,
            okBtn:okBtn,
            cancelBtn:cancelBtn,
            transition: true,
            okHidden:function(){
                okHidden();
            }
        });
    }
    //confirm 弹窗  end

    //alert 弹窗  start
    function alertModel(title,body){
        if(!title){
            title='温馨提示';
        }
        if(!body){
            body='出错了，再来一次！';
        }
        $.alert({
            title:title,
            body: body,
            transition: true
        });
    }
    //alert 弹窗  end

    // ajax 请求 start
    function ajaxGet(url, data, success, error){
        $.ajax({
            type:"get",
            url:url,
            data:data,
            dataType:"json",
            beforeSend:function(){
                $('.loading').removeClass('display-none');
            },
            success: function (data) {
                $('.loading').addClass('display-none');
                if (typeof data == 'string') {
                    data = $.parseJSON(data);
                }
                success(data);

            },
            error: function (x,t,e) {
                $('.loading').addClass('display-none');
                if (error === undefined) {
                    if (t == 'timeout') {
                        console.log('请求超时');
                    }
                } else {
                    error(x,t,e);
                }

            }
        });
    }

    function ajaxPost(url, data, success, error){
        $.ajax({
            type:"post",
            url:url,
            data:data,
            dataType:"json",
            beforeSend:function(){
                $('.loading').removeClass('display-none');
            },
            success: function (data) {
                $('.loading').addClass('display-none');
                if (typeof data == 'string') {
                    data = $.parseJSON(data);
                }
                success(data);
            },
            error: function (x,t,e) {
                $('.loading').addClass('display-none');
                if (error === undefined) {
                    if (t == 'timeout') {
                        console.log('请求超时');
                    }
                } else {
                    error(x,t,e);
                }

            }
        });
    }
    // ajax 请求 end

    // 页码函数方法  start
    function page(id,data,fun,param){
        var totalPages=Math.ceil(data.pagination.total/data.pagination.per_page);
        $('#'+id).jqPaginator({
            totalPages:totalPages,
            visiblePages:5,
            currentPage:data.pagination.current_page,
            first:'',
            last:'',
            onPageChange:function(e){
                param.page=e;
                fun(param);
            }
        })
    }
    // 页码函数方法  end

    // 日历限制最小(大)可选日期为当日  start
    var date=new Date();
    function formatDate(date) {
        var y = date.getFullYear();
        var m = date.getMonth() + 1;
        m = m < 10 ? '0' + m : m;
        var d = date.getDate();
        d = d < 10 ? ('0' + d) : d;
        return y + '-' + m + '-' + d;
    };
    $('.limitStartData').datepicker({
        startDate:formatDate(date)
    });
    $('.limitEndData').datepicker({
        endDate:formatDate(date)
    });
    // 日历限制最小(大)可选日期为当日  end

    //对一个日期相加（减）天数计算 方法  start
    function addDate(date,days){
        var d=new Date(date);
        d.setDate(d.getDate()+days);
        var month=d.getMonth()+1;
        var day = d.getDate();
        if(month<10){
            month = "0"+month;
        }
        if(day<10){
            day = "0"+day;
        }
        var val = d.getFullYear()+"-"+month+"-"+day;
        return val;
    }
    //对一个日期相加（减）天数计算 方法  end

    //将系统日期变为 yyyy-mm-dd h:m:s   格式   start
    function formatTen(num) {
        return num > 9 ? (num + "") : ("0" + num);
    }
    function formatDate(date,h,m,s) {
        var year = date.getFullYear();
        var month = date.getMonth() + 1;
        var day = date.getDate();
        var hour = date.getHours();
        var minute = date.getMinutes();
        var second = date.getSeconds();
        var time=year + "-" + formatTen(month) + "-" + formatTen(day);
        if(h){
            time+=' '+hour;
            if(m){
                time+=':'+minute;
                if(s){
                    time+=':'+second;
                }
            }
        }
        return time
    }
    //将系统日期变为 yyyy-mm-dd h:m:s   格式   end

    //获取日期对应星期几  start
    function getWeek(data){
        var weekArr=['星期日','星期一','星期二','星期三','星期四','星期五','星期六'];
        var week=weekArr[new Date(data).getDay()];
        return week;
    }
    //获取日期对应星期几  end

    //模态框 层上层提示点击周围关闭层  start
    $('body').delegate('div.alertZindex','click',function(){
        $('.sui-modal-backdrop').removeClass('alertZindex');
    });
    //模态框 层上层提示点击周围关闭层  end

    //ie 低版本  maxLength 属性  start
    $('body').find('textarea').change(function () {
        var len = $(this).attr('maxLength');
        var val=$(this).val();
        $(this).val(val.substring(0, len));
    });
    $('body').find('input').change(function () {
        var len = $(this).attr('maxLength');
        var val=$(this).val();
        $(this).val(val.substring(0, len));
    });
    //ie 低版本  maxLength 属性  end


    //姓名复选框是否全选 start   todo 通用于预约中心和医生管理
    $('.reservationCenter-table thead th input.checkBox').click(function(){
        var inputList=$('#'+$(this).attr('data-id')).find('td input.checkBox');
        if($(this).is(':checked')){
            for(var i=0;i<inputList.length;i++){
                if(!($(inputList[i]).is('checked'))){
                    if(!($(inputList[i]).attr('disabled'))){
                        $(inputList[i]).attr('checked','checked');
                        $(inputList[i]).prop('checked',true);
                    }
                }
            }
        }else{
            for(var j=0;j<inputList.length;j++){
                $(inputList[j]).removeAttr('checked');
            }
        }
    });
    $('.reservationCenter-table tbody').delegate('td input.checkBox','click',function(){
        var inputList=$(this).parent().parent().parent().parent().find('td input:checkBox');
        var dataId=$(this).parent().parent().parent().parent().attr('id');
        var dataIdInput=$('.reservationCenter-table thead input[data-id="'+dataId+'"]');
        if($(this).is(':checked')){
            var checked=true;
            for(var i=0;i<inputList.length;i++){
                if(!($(inputList[i]).attr('disabled'))){
                    if(!($(inputList[i]).is(':checked'))){
                        checked=false;
                        break;
                        return;
                    }
                }
            }
            if(checked){
                dataIdInput.attr('checked','checked');
                dataIdInput.prop('checked',true);
            }
        }else{
            dataIdInput.removeAttr('checked');
        }
    });
    //姓名复选框是否全选 end



    //手机号11位 且 符合规则 监测  start
    $('input.phoneLength').bind('input.phoneLength propertychange',function(){
        var reg = /^\d+$/;
        if($(this).val().length>11){
            $(this).val($(this).val().slice(0,11));
        }else{
            if(!(reg.test($(this).val()))){
                $(this).val($(this).val().slice(0,$(this).val().length-1));
            }
        }
    });
    function checkPhone(val){
        var reg=/^1[345789]{1}\d{9}$/;
        if(val){
            val=val.trim();
            if(reg.test(val)){ return true; }
            else{ return false; }
        }
        else{ return true; }
    }
    //手机号11位 且 符合规则 监测  end

    //姓名 16个字符监测  start
    function chkstrlen(str){
        var strlen = 0;
        for(var i = 0;i < str.length; i++)
        {
            if(str.charCodeAt(i) > 255) //如果是汉字，则字符串长度加2
                strlen += 2;
            else
                strlen++;
        }
        return   strlen;
    }
    function checkName(nameStr){
        var reg = /^([\u4E00-\uFA29]*[0-9]*[a-z]*[A-Z]*)+$/;
        if(nameStr){
            nameStr=nameStr.trim();
            if ((reg.test(nameStr)) && (chkstrlen(nameStr)) ){ return true; }
            else { return false; }
        }
        else{ return true; }
    }
    //姓名 16个字符监测  end

    //密码  6-16位数字 字母  或者两者组合  start
    function checkPassword(pwd){
        var reg = /^[A-Za-z0-9]{6,16}$/;
        if(reg.test(pwd)){
            return true;
        }else {
            return false;
        }
    }
    //密码  6-16位数字 字母  或者两者组合  end

    // 检测两个时间大小 (第三个参数没有 默认 结束时间大于开始时间)  start
    function checkTwoDate(star_time,end_time,endLessStart){
        var now=new Date();
        if(star_time && end_time){
            // 结束时间
            var edate = end_time.split('-');
            var end = new Date(edate[0], edate[1]-1, edate[2]);
            // 开始时间
            var sdate = star_time.split('-');
            var start = new Date(sdate[0], sdate[1]-1, sdate[2]);
            if(endLessStart){
                if(end-start<=0){ return true; } else{ return false; }
            }else{
                if(end-start>=0){ return true; } else{ return false; }
            }
        }else {
            return true;
        }
    }
    // 检测两个时间大小 (第三个参数没有 默认 结束时间大于开始时间)  end


    //数字 最小 最大 且保留几位小数方法 start
    function dealNum(_this,min,Min,max,Max,fix){
        var num=parseFloat(_this.val());
        if(isNaN(num)){
            _this.val('');
        } else{
            if (num <= min) {
                _this.val(Min);
            } else if (num > max) {
                _this.val(Max);
            } else {
                _this.val(parseFloat(parseFloat(num).toFixed(fix)));
            }
        }
    }
    //数字 最小 最大 且保留几位小数方法 end

    //人数类型 1-999 输入框限制  start
    $('body').delegate('.peopleInput','blur',function(){
        dealNum($(this),1,1,999,999,0);
    });
    //人数类型 1-999 输入框限制  end


//上下午 时间设置 字符串  start
var morningPeriod='';
var afternoonPeriod='';
//上下午 时间设置 字符串  end

//上午 下午  切换选择  start
$('.base-message-input select[name="am"]').change(function(){
    var timeSelect=$('.base-message-input select[name="section"]');
    if($(this).val() === '1'){
        timeSelect.html(morningPeriod);
    }else{
        timeSelect.html(afternoonPeriod);
    }
});
//上午 下午  切换选择  end

//预约医生  切换选择   start
$('#addReservationForm select[name="doctor_id"]').change(function(){
    $('#reservationDateInput').val('');
    $('#addReservationForm select[name="room"]').html('<option value="">请选择</option>');
    $('#addReservationForm select[name="am"]').html('<option value="">请选择</option>');
    $('#addReservationForm select[name="section"]').html('<option value="">请选择</option>');
});
//预约医生  切换选择   end

//预约日期输入框 获得焦点请求能预约的日期   start
$('#reservationDateInput').focus(function(){
    var _this=$(this);
    var doctor_id=$('#addReservationForm select[name="doctor_id"]').val();
    var date=$('div.datepicker-days.clearfix thead tr.date-header th.datepicker-switch').html();
    var year=date.substring(0,4);
    var month=parseInt(date.substring(date.length-1,date.length-3));
    if(month<10){month='0'+month};
    date=year+'-'+month+'-01';
    var todayDay=$('div.datepicker-days.clearfix tbody td.today').attr('data-day');
    var today=year+'-'+month+'-01';
    // if(todayDay){
    //     if(todayDay<10){todayDay='0'+todayDay};
    //     today=year+'-'+month+'-'+todayDay;
    // }else{
    //     today=year+'-'+month+'-01';
    // }
    var result={doctor_id:doctor_id,time:today};
    if((_this.attr('data-doctorId') != result.doctor_id) || (_this.attr('data-time') != result.time)){
        $('div.datepicker-days.clearfix tbody td').addClass('disabled');
        $.get(RESERVATIONCENTERURL.doctorManagement.doctor.planInMonthAfterNow,result,function(data){
            if(data.code == 10000){
                $.each(data.data,function(i,v){
                    if(checkTwoDate(today,i)){
                        var day=parseInt(i.substring(i.length,i.length-2));
                        $('div.datepicker-days.clearfix tbody td[data-day="'+day+'"]').removeClass('disabled');
                    }
                });
                $('div.datepicker-days.clearfix tbody td.new').addClass('disabled');
                _this.attr('data-doctorId',result.doctor_id);
                _this.attr('data-time',result.time);
            }
        });
    }
});
//预约日期输入框 获得焦点请求能预约的日期   end

//预约日期输入框 选择日期失去焦点  获取当天的诊室和时间  start
$('#reservationDateInput').blur(function(){
    var _this=$(this);
    var doctor_id=$('#addReservationForm select[name="doctor_id"]').val();
    setTimeout(function(){
        var times=_this.val();
        if(times){
            $.get(RESERVATIONCENTERURL.doctorManagement.doctor.plan,{doctor_id:doctor_id,times:times},function(data){
                if(data.code == 10000){
                    $('#addReservationForm select[name="room"]').html('<option value="'+data.data[times].room+'">诊室'+ data.data[times].room+'</option>');
                    if(data.data[times].workload['0'] && data.data[times].workload['1']){
                        $('#addReservationForm select[name="am"]').html('<option value="1">上午</option><option value="0">下午</option>');
                    }else if(data.data[times].workload['0']){
                        $('#addReservationForm select[name="am"]').html('<option value="0">下午</option>');
                        morningPeriod='';
                    }else if(data.data[times].workload['1']){
                        $('#addReservationForm select[name="am"]').html('<option value="1">上午</option>');
                        afternoonPeriod='';
                    }
                    $.each(data.data[times].workload,function(i,v){
                        if(v){
                            var str='';
                            for(var j=0;j<v.length;j++){
                                str+='<option value="'+v[j].start+'-'+v[j].end+'">'+v[j].start+':00-'+v[j].end+':00</option>';
                            }
                            if(i == '0'){
                                afternoonPeriod=str;
                            }else if(i == '1'){
                                morningPeriod=str;
                            }
                        }
                    });
                    $('.base-message-input select[name="am"]').change();
                }else{
                    alertModel('',data.message);
                }
            });
        }else{
            $('#addReservationForm select[name="room"]').html('<option value="">请选择</option>');
            $('#addReservationForm select[name="am"]').html('<option value="">请选择</option>');
            $('#addReservationForm select[name="section"]').html('<option value="">请选择</option>');
        }
        _this.removeAttr('data-doctorId');
        _this.removeAttr('data-time');
    },200);
});
//预约日期输入框 选择日期失去焦点  获取当天的诊室和时间  end

//保存和取消  start
$('#addReservationSave').click(function(){
    var result=$('#addReservationForm').serialize();
    if($('.base-message-input input[name="time"]').val()){
        ajaxPost(RESERVATIONCENTERURL.addReservation.store, result, function(data){
            if(data.code === 10000){
                $.confirm({
                    title:'温馨提示',
                    body: '预约成功！',
                    okBtn:'继续预约',
                    cancelBtn:'查看预约',
                    transition: true,
                    okHidden:function(){
                        $('#addReservationClose').click();
                    },
                    cancelHidden:function(){
                        window.location.href = $('#addReservationSave').attr('data-url');
                    }
                });
            }else{
                alertModel('','预约失败，请重试！');
            }
        }, function(){});
    }else{
        alertModel('','请选择预约时间！');
    }
});
$('#addReservationClose').click(function(){
    window.location.href = $(this).attr('data-url');
});
//保存和取消  end